/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Interface;

import java.awt.Color;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Toolkit;

/**
 * Power-ups largués lorsqu'on tue un certain nombre d'ennemis. Après les avoir 
 * tirés, on peut activer leur pouvoir.
 * @author Laurent/Pascal
 */
public class PowerUp extends ElementDuJeu
{
    TypePowerUp type;
    int vitesse= 5;
    int posX=0, posY=0;
    Monde monde;
    String nom;
    Image image;
    
    /**
     * Constructeur du power-up. 
     * @param type Type de power-up, choisi selon des probabilités.
     * @param posX Position aléatoir d'apparition en x.
     * @param monde Monde dans lequel le power-up est créé.
     * @param prototype True si le mode prototype est activé.
     */
    public PowerUp(TypePowerUp type, int posX, Monde monde, boolean prototype){
        
        switch(type) {
            case ARRET_DU_TEMPS:
                nom = "TIME STOP";
            break;
            case TETE_CHERCHEUSE:
                nom = "Assistant";
            break;
            case NUKE:
                nom = "BOOM";
                break;
            case NEGATIF_ACCELERATION:
                nom = "MODE GORE";
                break;
        }

    image= Toolkit.getDefaultToolkit().getImage(ClassLoader.getSystemResource("Fichier/Powerupf.png"));
    this.setSize(50, 50);
    this.prototype = prototype;
    this.type = type;
    this.setLocation(posX, 50);
    this.posX=posX;
    this.monde=monde;
    }
    
    /**
     * Dessine le power-up. Carré de couleur dépendant du type (prototype) ou
     * caisse avec parachute blanche.
     * @param g Permet de dessiner.
     */
    
    @Override
    public void paintComponent(Graphics g)
    {
        if (prototype){
        switch(type) {
            case ARRET_DU_TEMPS:
               g.setColor(Color.BLUE);
              g.fillRect(0, 0, getWidth(), getHeight());
           break;
            case TETE_CHERCHEUSE:
              g.setColor(Color.ORANGE);
                g.fillRect(0, 0, getWidth(), getHeight());
            break;
           case NUKE:
               g.setColor(Color.WHITE);
                g.fillRect(0, 0, getWidth(), getHeight());
                break;
            case NEGATIF_ACCELERATION:
                g.setColor(Color.PINK);
                g.fillRect(0, 0, getWidth(), getHeight());
                break;
        }}
        else{
        g.drawImage(image, 0, 0, getWidth(), getHeight(), this);}
        
        
    }

    /**
     * Déplacement vers le bas selon la vitesse.
     */
    
    @Override
    public void bouger(double newX, double newY)
    {   
        posY=posY+vitesse;
        setLocation(posX, posY);
        repaint();
    }
    
    /**
     * Appèle les mothodes permettant d'activer le pouvoir associé au type du power-up.
     * Activé au clic droit de la souris, ou automatiquement pour l'augmentation de la difficulté.
     */

    public void activerPuissance() throws InterruptedException{
        
        
        switch(type) {
            case ARRET_DU_TEMPS:
                 monde.timeStop();
            break;
            case TETE_CHERCHEUSE:
                monde.ajoutTourelle();
            break;
            case NUKE:
                monde.genocide();
                break;
            case NEGATIF_ACCELERATION:
                monde.accelererCibles();
                break;
        }
    }
    
}
